package encome.work.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import encome.work.dao.Menu;
import encome.work.dao.Permission;
import encome.work.dao.Role;
import encome.work.dao.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author xialinrui
 */
@Repository
@Mapper
public interface UserMapper extends BaseMapper<User> {

    User findByUsername(String username);
    @Insert("insert into user(open_id, status) values (#{openid}, 0)")
    void insertOpenid(@Param("openid") String openid);
    List<Role> findRoles(@Param("userId") Long userId);

    /**
     * 根据用户ID查询菜单信息
     * @param userId
     * @return
     */
    List<Menu> findMenus(@Param("userId") Long userId);

    /**
     * 根据父级ID和用户ID查询子级菜单
     * @param id 父级ID
     * @param userId 用户ID
     * @return
     */
    List<Menu> findChildrenMenu(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 根据用户ID查询权限数据
     * @param userId
     * @return
     */
    List<Permission> findPermissions(@Param("userId") Long userId);

    /**
     * 根据用户信息中的角色列表，去添加用户的角色
     * @param userId
     * @param roleId
     */
    void insertUserRoles(@Param("userId") Long userId, @Param("roleId") Long roleId);


    /**
     * 根据用户ID去删除角色列表
     * @param userId
     */
    void deleteRolesByUserId(@Param("userId") Long userId);


    Page<User> findPage(Page<User> page, @Param("queryString") String queryString);


    @Update("update user set volunteer_times = volunteer_times + 1 where id = #{user_id}")
    void addVolunteerTimes(@Param("user_id") Long userId);


}
